package collection;

import java.util.ArrayList;
import java.util.Collection;

/**
 * jdk5推出时，退出了一个新的特性：增强for循环
 * 通常也称为新循环
 * 新循换不取代传统的for循环的工作，他的出现仅仅为了使用相同的语法遍历集合或数组。
 * 语法：
 * for（元素类型 e : 集合或者数组）{
 *
 * }
 */
public class NewForDemo {
    public static void main(String[] args) {
        String[] array = {"one","two","three","four","five"};
        for (int i = 0;i<array.length;i++){
            String s = array[i];
            System.out.println(s);
        }

        for (String s:array){
            System.out.println(s);
        }

        /*
            JDK5之后还推出了一个特性：泛型
            泛型也称为参数化类型，他的原型就是Object， 泛型的目的是让我们将定义的Object
            类型当做什么看待。
            例如下面的集合中保存的每个元素都是用Object接收的，但是集合将它改成了E类型
            这样一来，我们在使用集合时可以告知集合应当将E当做什么类型看待。
            public class XXX{
                public Object xx;
            }

            XXX o = new XXX();
            o.xx = 任何类型的值;

            泛型的写法:
            public class XXX<E>{
                public E xx;
            }

            XXX<String> o = new XXX<>();
            o.xx = "abc";


         */
        Collection<String> c = new ArrayList<>();
        c.add("一");//编译器会检查传入的的E对应的实参是否为指定的实际类型
        c.add("二");
        c.add("三");
        c.add("四");
        c.add("五");
        //        c.add(1);//当实参不符合E指定的实际类型时，编译不通过
        for (String str :c){
            System.out.println(str);
        }
    }
}
